package leetcode.nowcoder.p529;

import leetcode.ListNode;

public class Solution {
    public ListNode FindKthToTail2(ListNode head, int k) {
        //方法二，通过两个引用，前引用 先走k布到达倒数第k个结点，之后 前引用与后引用同时向前走，当前引用为空时，后引用即指向倒数第K个结点
        ListNode front=head;
        ListNode back=head;

        for(int i=0;i<k;i++) {
            if(front==null) {
                return null;
            }
            front=front.next;
        }

        while (front!=null) {
            front=front.next;
            back=back.next;
        }
        return back;
    }

    public ListNode FindKthToTail(ListNode head, int k) {
        //输出链表的倒数第k个结点
        int count=0;
        for(ListNode cur=head;cur!=null;cur=cur.next) {
            count++;
        }
        //首先要判断k与链表结点长度的关系！！！！
        if(count<k) {
            return null;
        }else if(count==k) {
            return head;
        }else {
            int n=count-k+1;
            int step=count-k;
            ListNode cur=head;
            for(int i=0;i<step;i++) {
                cur=cur.next;
            }
            return cur;
        }

    }
}
